﻿using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using STS.Model;
using System;

namespace STS.ViewModel
{
    public class OsrodekViewModel : BaseViewModel
    {
        private ObservableCollection<Osrodek> _osrodekItems;
        public ObservableCollection<Osrodek> OsrodekItems
        {
            get
            {
                if (_osrodekItems == null)
                {
                    _osrodekItems = new ObservableCollection<Osrodek>();
                }
                return _osrodekItems;
            }
            set
            {
                _osrodekItems = value;
                NotifyPropertyChanged("OsrodekItems");
            }
        }

        public void FindOsrodekItems()
        {
            var osrodekDB = from osrodek in ModelInstance.DataContext.OsrodekItems
                           select osrodek;
            OsrodekItems = new ObservableCollection<Osrodek>(osrodekDB);
            Debug.WriteLine("Znalazłem ośrodki, size = " + OsrodekItems.Count);
        }

        public Osrodek FindOsrodekByIdOsrodka(int osrodekId)
        {
            var osrodekDB = from osrodek in ModelInstance.DataContext.OsrodekItems
                           where osrodek.IdOsrodka == osrodekId
                           select osrodek;
            return osrodekDB.SingleOrDefault<Osrodek>();
        }

        public void UpdateOsrodek(Osrodek updateOsrodek)
        {
            Osrodek old = FindOsrodekByIdOsrodka(updateOsrodek.IdOsrodka);
            SetEntityPropertities(ref old, updateOsrodek);
            SaveChangesToDB();
        }

        public void AddOsrodek(Osrodek osrodek)
        {
            ModelInstance.DataContext.OsrodekItems.InsertOnSubmit(osrodek);
            SaveChangesToDB();
            OsrodekItems.Add(osrodek);
        }

        public void RemoveOsrodek(Osrodek osrodek)
        {
            OsrodekItems.Remove(osrodek);
            ModelInstance.DataContext.OsrodekItems.DeleteOnSubmit(osrodek);
            SaveChangesToDB();
        }

        public void RemoveAllOsrodek()
        {
            var osrodekDB = from osrodek in ModelInstance.DataContext.OsrodekItems
                           select osrodek;

            foreach (Osrodek _osrodek in osrodekDB)
            {
                ModelInstance.DataContext.OsrodekItems.DeleteOnSubmit(_osrodek);
            }

            try
            {
                SaveChangesToDB();
                OsrodekItems.Clear();
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
        }

    }
}
